<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Uzytkownik_Model
 *
 * @author Właściciel
 */
class Uzytkownik_Model extends Model{
    protected $id,$login,$haslo,$email,$nazwisko,$imie,$id_projektu,$a,$b;
    //put your code here
    public function __construct(){
            parent::__construct();
    }
    public function set_branza($zmienna)
    {
        $this->b=$zmienna;
    }
    public function get_branza()
    {
        return $this->b;
    }
    public function set_nr_wniosku($zmienna)
    {
        $this->a=$zmienna;
    }
    public function get_nr_wniosku()
    {
        return $this->a;//=$zmienna;
    }
    public function set_id($id)
    {
        $this->id=$id;
    }
    public function get_id()
    {
        return $this->id;
    }
    public function set_idprojektu($id)
    {
        $this->id_projektu=$id;
    }
    public function get_idprojektu()
    {
        return $this->id_projektu;
    }

    public function set_login($zmienna)
    {
        $this->login=$zmienna;
    }
    public function get_login()
    {
        return $this->login;
    }
    public function set_haslo($zmienna)
    {
        $this->haslo=$zmienna;
    }
    public function get_haslo()
    {
        return $this->haslo;
    }
    public function set_imie($zmienna)
    {
        $this->imie=$zmienna;
    }
    public function get_imie()
    {
        return $this->imie;
    }
    public function set_email($zmienna)
    {
        $this->email=$zmienna;
    }
    public function get_email()
    {
        return $this->email;
    }
    public function set_nazwisko($zmienna)
    {
        $this->nazwisko=$zmienna;
    }
    public function get_nazwisko()
    {
        return $this->nazwisko;
    }
    public function przypisz_role($id_osoby,$id_rola,$opcja)
    {
        switch($opcja)
        {
            case 'wniosek';
                $this->db->from('projekt_users')
                ->set(
                array(
                    'id_rola' =>$id_rola
                    ))
                ->where(array('id_osoby' => $id_osoby,'id_wniosek'=>$this->get_id()))
                ->update();
                break;
            case 'projekt';
                $this->db->from('projekt_users')
                ->set(
                array(
                    'id_rola' =>$id_rola
                    ))
                ->where(array('id_osoby' => $id_osoby,'id_projekt'=>$this->get_id()))
                ->update();
                break;
        }

    }
    /**
     *pobiera wszystkich userow z tabeli users
     * @return asocjacyjna
     */
    public function pobierz_wszystkich_srm()
    {
        return $this->db->select('*')->from('users')->get()->result_array();
    }
    public function pobierz_wszystkie_osoby_alfabetycznie($warunek=null,$slowa=null)
    { //        $w='(nazwisko likeecho '<br>.'.$t;
        if ($slowa!=null)
            {
            $a='%'.$slowa.'%';

            $sql="select nazwisko,imie,email,id_osoby from osoby
                where status = 0 and (nazwisko like ? or imie like ? or email like ? )
                order by nazwisko asc ".$warunek;
            $rezultat=$this->db->query($sql,array($a,$a,$a))->result_array(false);
            }
        else
            {
            $sql="select nazwisko,imie,email,id_osoby from osoby where status = 0  order by nazwisko asc ".$warunek;
            $rezultat=$this->db->query($sql)->result_array(false);
            }
        return $rezultat;
    }
    public function zmien_status_osoby()
    {
        $this->db->from('osoby')
                ->set(
                array(
                    'status' =>2
                    ))
                ->where('id_osoby',$this->get_id())
                ->update();
    }
    public function importuj_z_xls($tablica,$id_projektu,$warunek,$opcja)
    {

            switch($opcja)
            {
                case 'dostawca':
                    foreach($tablica as $w)
                        {
                    $ciag=explode('|',$w);/*
                    $this->set_email($ciag[1]);
                    $this->set_email($ciag[4]);
                    $this->set_haslo($ciag[3]);
                    $this->set_id($ciag[2]);
                    $this->set_idprojektu($ciag[1]);
                    $this->set_imie($ciag[0]);*/

                    $ciag2=explode(' ',preg_replace('/\s\s+/', '', $ciag[0]));
                    $liczba=$this->sprawdz_email('dostawcy');//==0
                    //$id=$this->dodaj_z_palca('d','dostawca',null);

                    if($liczba==1)
                        return 'Dostawca już istnieje.';
                    if($liczba==0)
                        {
                        $this->set_idprojektu($id_projektu);
                        $this->set_nazwisko($ciag2[1]);
                        $this->set_imie($ciag2[0]);
                        $this->set_email($ciag[1]);
                        $wynik=$this->wstaw_osobe('dostawcy');

                        if($warunek)
                            {
                            $sql="insert into projekt_users(id_projekt,id_rola,id_osoby)
                                values(?,?,?)";
                            $rezultat=$this->db->query($sql,array($id_projektu,1,$wynik->insert_id()));
                            }
                        }
                        return 'Dodano dostawcę.';
                        }
                    break;
                case 'osoba':
                    foreach($tablica as $w)
                        {
                    $ciag=explode('|',$w);
                    $this->set_email($ciag[2]);
                    if($this->sprawdz_email('osoba')==0)
                        {
                        $this->set_nazwisko($ciag[0]);
                        $this->set_imie($ciag[1]);
                        $this->set_email($ciag[2]);
                        $wynik=$this->wstaw_osobe(null);
                        if($warunek)
                            {
                            $sql="insert into projekt_users(id_projekt,id_rola,id_osoby)
                                values(?,?,?)";
                            $rezultat=$this->db->query($sql,array($id_projektu,1,$wynik->insert_id()));
                            }
                        }
                        }
                    break;
            }
    }
    /**
     *
     * @param <type> $tablica tablica
     * @param <type> $id_projektu numer_wniosku
     * @param <type> $warunek
     * @param <type> $opcja 'dostawca'
     */
    public function importuj_z_xls2($tablica,$id_projektu,$warunek,$opcja)
    {

            switch($opcja)
            {
                case 'dostawca':
                    foreach($tablica as $w)
                        {
                    $ciag=explode('|',$w);
                    //var_dump($ciag);
                    //$this->set_email($ciag[1]);
                    $this->set_email($ciag[4]);
                    $this->set_haslo($ciag[3]);
                    $this->set_id($ciag[2]);
                    $this->set_idprojektu($ciag[1]);
                    $this->set_imie($ciag[0]);

                    //$ciag2=explode(' ',preg_replace('/\s\s+/', '', $ciag[0]));
                    //$liczba=$this->sprawdz_email('dostawcy');//==0
                    $id=$this->dodaj_z_palca('d','dostawca',null);
                    //var_dump($id);
                        }
                    break;
                case 'osoba':
                    foreach($tablica as $w)
                        {
                    $ciag=explode('|',$w);
                    $this->set_email($ciag[2]);
                    if($this->sprawdz_email('osoba')==0)
                        {
                        $this->set_nazwisko($ciag[0]);
                        $this->set_imie($ciag[1]);
                        $this->set_email($ciag[2]);
                        $wynik=$this->wstaw_osobe(null);
                        if($warunek)
                            {
                            $sql="insert into projekt_users(id_projekt,id_rola,id_osoby)
                                values(?,?,?)";
                            $rezultat=$this->db->query($sql,array($id_projektu,1,$wynik->insert_id()));
                            }
                        }
                        }
                    break;
            }
    }
    protected function sprawdz_imie_nazwisko_dostawcy($imie,$nazwisko)
    {
        $sql="inselect nazwisko,imie,email,id_dostawcy as id_osoby from dostawcy
            where lower(nazwisko)=lower(?) and lower(imie)=lower(?)";
                //var_dump($this->db->query($sql,array($nazwisko,$imie))->result_array(false));
                return $this->db->query($sql,array($nazwisko,$imie))->result_array(false);
    }
    protected function dodaj_ascocjacyjna__moidostawcy_branza($branza,$id_osoby)
    {
             return $this->db->insert('moi_dostawcy_branza',
                array('id_branza'=>$branza,'id_moi_dostawcy'=>$id_osoby));
    }
    public function dodaj_z_palca($opcja,$opcja2,$opcja3=null)
    {
        $id_osoby=-1;
        if($opcja3=='dostawca')
        {
            $wynik=$this->pobierz_osobe_wg_maila('users');
            if(empty($wynik))
                $wynik=$this->pobierz_osobe_wg_maila($opcja);
        }
        if($opcja3!=null and $opcja3!='dostawca')
        {
            //sprawdz imie i nazwisko
            //echo 'opcja3';
            $dane=explode('|',$opcja3);
            $wynik=$this->sprawdz_imie_nazwisko_dostawcy ($dane[0], $dane[1]);
        }
        else
        {
           // echo '<br>aaa';
            $wynik=$this->pobierz_osobe_wg_maila($opcja);
            //var_dump($wynik);
        }

        //var_dump($wynik);
        //if(empty($wynik[0]['id_moi_dostawcy']))
        if(empty($wynik[0]['id_osoby']))
            {
            //echo '<br>ddddd';
                $wynik=$this->wstaw_osobe($opcja2);
                //echo '<br>wynik';
                //var_dump($wynik);
                //echo '<br>wynik';
                $id_osoby=$wynik->insert_id();
                if($opcja3=='dostawca')
                {
                    $this->dodaj_ascocjacyjna__wniosek_moidostawcy($this->get_nr_wniosku(),$id_osoby);
                    $this->dodaj_ascocjacyjna__moidostawcy_branza($this->get_branza(),$id_osoby);
                }
            }
            else
            {
                //echo '<br>cccc';
                //$id_osoby=$wynik[0]['id_moi_dostawcy'];
                $id_osoby=$wynik[0]['id_osoby'];
            }
                //$id_osoby=-1;
        return $id_osoby;
    }
    public function dodaj_ascocjacyjna__wniosek_moidostawcy($id_wniosek,$id_moi_dostawcy)
    {
        return $this->db->insert('dostawcy_wniosek',
                array(
                    'id_wniosek'=>$id_wniosek,
                    'id_moi_dostawcy'=>$id_moi_dostawcy
                ));
    }
    public function pobierz_osobe_wg_maila($opcja)
    {
        switch($opcja)
        {
            case 'users':
                $mail='%'.  $this->get_email().'%';
                $sql="select m.id_moi_dostawcy
                    from moi_dostawcy m
                    inner join users u on u.id_users=m.id_dostawca";
                    //where u.email like $mail
                    $sql.=" where u.email like '".$this->get_email();
                    $sql.="' and m.id_users in (select id_users from users where id_firma=344)";
                return $this->db->query($sql,$this->get_email())->result_array(false);
                break;
            case 'd':
                $sql="select *,id_moi_dostawcy as id_osoby from moi_dostawcy where lower(email)=lower(?)";

                //$sql="select nazwisko,imie,email,id_dostawcy as id_osoby from dostawcy where lower(email)=lower(?)";
                return $this->db->query($sql,$this->get_email())->result_array(false);
                break;
            case 'o':
                //$sql="select nazwisko,imie,email,id_osoby from osoby where lower(email)=lower(?)";
                $sql="select nazwisko,imie,email,id_osoby from osoby where lower(email) like lower(?)";
                $x=$this->db->query($sql,$this->get_email())->result_array(false);
                //var_dump($this->db->last_query());
                //var_dump($x);
                return $this->db->query($sql,$this->get_email())->result_array(false);
                break;
        }
        
    }
    public function wstaw_osobe($tabela=null)
    {
        if ($tabela!=null)
            {
            $sql="insert into moi_dostawcy(nazwa_firmy,email,id_users,id_dostawca)
            values(?,?,330,330)";
            //$sql="insert into dostawcy(nazwisko,imie,email,id_wniosek,status)
            //values(?,?,?,?,?)";
            return $this->db->query($sql,array(
            $this->get_nazwisko(),
            $this->get_email()
                ));
            }
            else
                {
                $sql="insert into osoby(nazwisko,imie,email)
                        values(?,?,?)";
                //echo '<br>wprowadzono';
                return $this->db->query($sql,array(
                    $this->get_nazwisko(),
                    $this->get_imie(),
                    $this->get_email()));
                }
    }
    public function przypisz_do_projektu($id_projektu,$id_wniosek)
    {
        if($id_wniosek)
            {
            $sql="insert into projekt_users(id_wniosek,id_rola,id_osoby)
                values(?,(select id_rola from rola where nazwa='Członek komisji'),?)";
            $rezultat=$this->db->query($sql,array($id_wniosek,$this->get_id()));
            }
            else
                {
            $sql="insert into projekt_users(id_projekt,id_rola,id_osoby)
                values(?,(select id_rola from rola where nazwa='Członek komisji'),?)";
            $rezultat=$this->db->query($sql,array($id_projektu,$this->get_id()));
                }
    }
    protected function zwroc_przypisanych($id_projektu)
    {
        $rezultat=$this->db->query('select u.nazwisko,u.imie,id_users,login,email from users u
            where id_users=?',$this->id)->result_array(false);
        foreach($rezultat as $wynik)
            {
            $tabela="<tr id='".$wynik['id_users']."'>
                <td>1</td>
                <td>".$wynik['nazwisko']." ".$wynik['imie']."</td>
                <td>".$wynik['email']."</td>
                <td>".$this->rola_w_projekcie($wynik['id_users'])."</td>
                <td>".$this->check_box($wynik['id_users'],$id_projektu)."</td>
                </tr>";
            }
            return $tabela;
    }
    protected function rola_w_projekcie($user)
    {
        $rezultat=$this->db->query('select id_rola,nazwa from rola')->result_array(false);
        $select_box="<select name='role'>";
        foreach($rezultat as $wartosc)
            $select_box.="<option value='".$user."|".$wartosc['id_rola']."'>".$wartosc['nazwa']."</option>";
        $select_box.="</select>";
        return $select_box;
    }
    protected function check_box($id_user,$login)
    {
        return $select_box="<input type='checkbox' id='check' name='check' value='{{".$id_user."}},{{".$login."}}' />";
    }
    public function dodaj()
    {
        $rezultat=$this->db->query('insert into users(login,haslo,email,ostatnio_aktywny) values(?,?,?,now())',
                array($this->login,$this->haslo,$this->email));
    }
    public function usun_osobe_z_projektu($opcja=null)
    {
        switch($opcja)
        {
            case 'd':
                /*
                    $status = $this->db->update('dostawcy',
                    array(
                        'status'         => 2
                        ),
                    array(
                        'id_wniosek' => $this->get_idprojektu(),
                        'id_dostawcy'=> $this->get_id()));*/
                    $this->db->query("delete from dostawcy_wniosek where id_dostawcy_wniosek=?",  $this->get_nr_wniosku());
                /*
                    $status = $this->db->update('dostawcy_wniosek',
                    array(
                        'status'         => 2
                        ),
                    array(
                        'id_wniosek' => $this->get_idprojektu(),
                        'id_dostawcy'=> $this->get_id()));
                        */
                    return $this->pobierz_tabele(array('Lp.','Nazwa dostawcy','Adres','Osoba kontaktowa','Nr telefonu','E-mail','Zaznacz'),$opcja);
                break;
            default:
                $wynik=$this->db->query("update osoby set status=2 where id_osoby=? ",
                array($this->get_id()));
                //return $this->pobierz_tabele($this->get_idprojektu(),'d');
                break;
        }
        
    }
    public function sprawdz_email($tabela)
    {
        $rezultat=$this->db->query("select * from $tabela where lower(email)=lower(?)",$this->email);
        if($rezultat->count()!=0)
            return 1;
        else
            return 0;
    }

    public function pobierz_tabele($nazwy_kolumn,$opcja)
        {
            $x="<table class='default' id='element'><tr>";
            foreach($nazwy_kolumn as $nazwa)
		$x.="<th>$nazwa</th>";
            $x.="</tr>";
            $a=1;
            foreach($this->pobierz_przypisanych('w') as $w)
                {
                switch($opcja)
                {
                    case 'd':
                        $x.="<tr>
		            <td>s</td>
                            <td>ss</td>
                            <td>aa</td>
                            </tr>";
                        break;
                    default:
                            $x.="<tr>
		            <td>$a</td>
                            <td >".$w['nazwisko']." ".$w['imie']."</td>
                            <td>".$w['email']."</td>
                            <td>
                                <select  class='defaultSelect smallInput'>
                                    <option >aa</option>
                                </select></td>
                            <td><input type='checkbox' id='check' name='check' value='".$w['id_osoby']."|$id_projektu' /></td></tr>";
                }
            $a++;
                }
            return $x;
        }
        /**
         *pobiera wszystkich przypisanych do danego projektu,wniosku->wczesniej wywolaj
         * set_id_projektu(<id_wniosku>)
         * @param string $parametr wniosek,p,w
         * @return asocjacyjna  
         */
    public function pobierz_przypisanych($parametr)
    {
        switch($parametr)
        {
            case 'wniosek':
                $sql="select distinct u.nazwisko,u.imie,u.id_osoby,u.email,r.nazwa,r.id_rola,r.nazwa
                    from
                    osoby u inner join projekt_users p
                    using(id_osoby)
                    inner join rola r using(id_rola)
                    where p.id_wniosek=? and u.status=0 ";
                $tt=$this->db->query($sql,$this->id_projektu)->result_array(false);
                //var_dump($tt);
                return $tt;//$this->db->query($sql,$this->id_projektu)->result_array(false);
                break;
            case 'p':
                $sql="select distinct u.nazwisko,u.imie,u.id_osoby,u.email,p.id_rola,
                    (select nazwa from rola where id_rola=p.id_rola) as nazwa
                    from
                    osoby u inner join projekt_users p
                    using(id_osoby)
                    where p.id_projekt=? and u.status=0 ";
                return $this->db->query($sql,$this->get_idprojektu())->result_array(false);
                break;
            case 'w':
                //echo '<br>'.  $this->id_projektu;
                $sql="select m.*,d.*,d.id_dostawcy_wniosek as numer_id
                    from moi_dostawcy m inner join dostawcy_wniosek d 
                    on m.id_moi_dostawcy=d.id_moi_dostawcy
                        and d.id_wniosek=?";
                /*
                $sql="select imie,nazwisko,email,id_dostawcy
                    from
                    dostawcy d inner join wniosek using(id_wniosek)
                    where d.id_wniosek=? and d.status=0 ";
                 *
                 */
                return $this->db->query($sql,$this->id_projektu)->result_array(false);
                break;
        }
    }
    /*
    public function przypisz_role($rola,$user,$projekt)
    {
        $sql="update projekt_users set id_rola=? where id_users=? and id_projekt=?";
        $wynik=$this->db->query($sql,array($rola,$user,$projekt));
    }
     * 
     */
    public function pobierz_role()
    {
        $sql="select id_rola,nazwa from rola";
        $wynik=$this->db->query($sql)->result_array(false);
        return $wynik;
    }
    public function pobierz_nieprzypisanych($id_user_projektu)
    {
        $sql="select u.* from users u inner join firma f using(id_firma) where id_firma in (344)";
        return $this->db->query($sql)->result_array(false);
        //return $this->db->query($sql,$id_user_projektu)->result_array(false);
    }
    public function dodaj_z_UI($indeksy,$id_projekt)
    {
        //echo 'id projekt='.$id_projekt;
        foreach($indeksy['check'] as $id_)
                {
                $this->set_id($id_);
                $this->dodaj_z_bazy($id_projekt);
                }
    }
    public function dodaj_z_bazy($id_projekt)
    {
            $sql="insert into osoby(nazwisko,imie,email)
                    select nazwisko,imie,email from users where id_users=?";
            $wynik=$this->db->query($sql,array($this->id));

        $sql="insert into projekt_users(id_projekt,id_rola,id_osoby)
            values(?,?,?)";
        $wynik=$this->db->query($sql,array(
            $id_projekt,
            1,
            $wynik->insert_id()));
    }
    public function pobierz_uzytkownika_tabela()
    {
        $wynik=$this->db->query("select id_users,login,email from users where id_users=?",$this->id)->result_array(false);
        foreach($wynik as  $a)
            return "<tr id='usun_".$a["id_users"]."'>
            <td>1</td>
            <td>".$a["login"]."</td>
            <td>".$a["login"]."</td>
            <td>".$a["email"]."</td>
            <td>".$a["email"]."</td>
            <td><input type='checkbox' id='check' name='check' value='".$_POST["id_users"]."' /></td>
            </tr>";
    }
    public function pobierz_id_osoby()
    {
        $sql="select id_osoby from osoby where lower(email)=lower(?)";
        return $this->db->query($sql,$this->email)->result_array(false);
    }
    /**
     *zwraca id_usera jako id_osoby
     * @return <type>
     */
    public function pobierz_usera()
    {
        $sql="select nazwisko,imie,email,id_users as id_osoby from users where id_users=?";
            $rezultat=$this->db->query($sql,array($this->id))->result_array(false);
        return $rezultat[0];

    }
    public function pobierz_osobe($t)
    {
            $sql="select id_osoby from osoby where lower(email)=lower(?)";
            $r=$this->db->query($sql,$rezultat[0]['email'])->result_array(false);
            $id_osoby=$r[0]['id_osoby'];
            if(empty($r))
                {
                echo '<br>dodaje osobe';
                }
    }
    public function dodaj_osobe($rezultat)
    {
            $sql="insert into osoby(nazwisko,imie,email,status)
                    values(?,?,?,0)";
                $rezultat=$this->db->query($sql,array(
                    $rezultat[0]['nazwisko'],
                    $rezultat[0]['imie'],
                    $rezultat[0]['email']));
                    $id_osoby=$rezultat->insert_id();
    }
    public function sprawdz($id_usera)
    {
        $wynik=$this->db->query('select nazwisko,imie,email from users where id_users=?',
                $this->id)->result_array(false);
        if(empty($wynik))
            echo 'puste';
        else
            echo 'nie';
    }
}
?>
